package monster.comm.util;

import java.text.SimpleDateFormat;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

import monster.comm.key.Key;
import monster.comm.log.ILog;
import monster.comm.log.LogService;
import monster.flight.admin.manager.service.xtgl.Users_logininfoService;
import monster.flight.comm.entity.vo.Users_logininfo;

/**
 * 
* 创建信息=============
* 类名: monster.comm.util.Session_listener
* 类作用描述: SESSION监听器，当登录和登录失效后自动启动执行,修改登录数据
* 创建人： jzk 
* 创建时间： 2013-1-6 下午04:08:36
* 修改信息1=============
* 修改类型:     //1.修改bug 2.业务变化修改
* 修改描述: 
* 修改人：  
* 修改时间：
 */
public class Session_listener implements HttpSessionBindingListener  {
	private static ILog log = LogService.getLog(HttpSessionBindingListener.class);
	/**
	 * 创建session监听，插入登录表数据
	 */
	public void valueBound(HttpSessionBindingEvent se) 
	{ 
//	 log.info("session创建："+new java.util.Date()); 
//	 log.info("===========得到创建的名称="+se.getName());
	 Object o=se.getValue();
	 if(o instanceof SessionBean){
		 log.info("建立的是seesionbean这个类");
		 SessionBean sessionBean=(SessionBean)o;
		// javax.servlet.ServletContext context=se.getSession().getServletContext();
		 
		 if (sessionBean!=null && sessionBean.getUser_id()!=null)
		    {
//		    	try
//		    	{
//		    		Users_logininfoService service = (Users_logininfoService)SpringApplicationContextFactory.getService("users_LogininfoService");
//		    		String key_sn =String.valueOf(Key.getKey(monster.flight.comm.util.SchConstant.XT_USERS_LOGININFO_KEY));
//		    		
//		    		String login_ip=(String)se.getSession().getAttribute("real_ip");
//		    		String datetime=Tool.getDateTime("-");
//		    		String user_id = sessionBean.getUser_id();
//		    		Users_logininfo po = new Users_logininfo();
//		    		po.setId(key_sn);
//		    		po.setLogin_ip(login_ip);
//		    		po.setLogin_time(datetime);
//		    		po.setUser_id(user_id);
//		    		
//		    		sessionBean.setSession_id(key_sn+"");
//		    		sessionBean.setLoginstart_time(datetime);
//		    		service.insert(po);
//		    		
//		    		}
//		      catch (Exception e)
//		      {
//		    	  log.error("--登陆监听出现异常--"+e);
//		    	  e.printStackTrace();
//		      }
		    }
		    else{
		    	log.info("用户登陆后没有发现session用户");
		    }
	 }
	 else{
		 log.info("=====不是这个监听器====="+o.getClass().getName());
	 }
     
     
	} 
	public void attributeReplaced(HttpSessionBindingEvent se){
		
		
	} 
 /**
  * 监听失效，修改登录数据
  */
	public void valueUnbound(HttpSessionBindingEvent se)
	{ 
	
		 log.info("session注销："+new java.util.Date()); 
		 log.info("===========得到注销的名称="+se.getName());
		 Object o=se.getValue();
		 if(o instanceof SessionBean){
			 SessionBean sessionBean=(SessionBean)o;
			 if (sessionBean!=null && sessionBean.getUser_id()!=null)
			    {
//			    	try
//			    	{
//			    		Users_logininfoService service = (Users_logininfoService)SpringApplicationContextFactory.getService("users_LogininfoService");
//			    		SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//			    		String datetime=Tool.getDateTime("-");
//			    		Double online_seconds=Math.ceil((sf.parse(Tool.getDateTime("-")).getTime()-sf.parse(sessionBean.getLoginstart_time()).getTime())/(60*1000d));
//			    		Users_logininfo po = new Users_logininfo();
//			    		int online_second = online_seconds.intValue();
//			    		po.setLogout_time(datetime);
//			    		po.setOnline_seconds(String.valueOf(online_second));
//			    		po.setId(sessionBean.getSession_id());
//			    		service.update(po);
//			    	
//			    	}
//			      catch (Exception e)
//			      {
//			    	  log.error("--登出监听出现异常--"+e);
//			    	  e.printStackTrace();
//			   
//			      }
			   }
			   else{
			    	log.info("用户注销时候没有发现session用户");
			   }
		 }
	} 
	
	
}


